package com.cim.utils;

import java.util.ArrayList;
import java.util.List;


public class PageUtil<T>  extends ArrayList{
    private int total;          // 总记录数
    private List<T> list;        // 结果集
    private int pages;          // 总页数
    private int size;           // 当前页的数量 <= pageSize，该属性来自ArrayList的size属性

    private int index;        // 第几页
    private int pageSize;       // 每页记录数

    /**
     * 包装Page对象，因为直接返回Page对象，在JSON处理以及其他情况下会被当成List来处理，
     * 而出现一些问题。
     * @param list          page结果
     * @param navigatePages 页码数量
     */
    public PageUtil(List<T> list) {
        this.list=list;
        index=1;
        pageSize=10;
        total=list.size();
        update();
    }

    //获取分页结果
    public List<T> getResult(){
        if(total<=0){
            return new ArrayList();
        }
        int fromIndex=(index-1)*pageSize;
        List<T> res=list.subList(fromIndex,size+fromIndex);
        return res;
    }
    public void setIndex(int index){
        if(index<1||index>pages){
            return;
        }
        this.index=index;
        //更新数据
        update();
    }

    public void setPageSize(int pageSize){
        if(pageSize<0){
            return;
        }
        this.pageSize=pageSize;
        //更新数据
        update();
    }

    private void update(){
        pages=total/pageSize+(total%pageSize==0?0:1);
        size=index>=pages?
                        total%pageSize==0?
                                pageSize:total%pageSize:
                        pageSize;
        //求当前页数据的数量
    }


    public int getTotal() {
        return total;
    }


    public List<T> getList() {
        return list;
    }

    public int getIndex() {
        return index;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getPages() {
        return pages;
    }

    public int getSize() {
        return size;
    }

}